package com.qding.park.manager.service.core.mapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.qding.park.manager.pojo.TbInoutRecord;
import com.qding.park.manager.pojo.TbInvitecard;
import com.qding.park.manager.pojo.example.TbInviteExample;

public interface TbInvitecardMapper {
	
	/**
	 * @Description (保存车辆邀请单，返回id)
	 * @param tbInvitecard
	 * @return
	 */
	int save(TbInvitecard tbInvitecard);
	
	/**
	 * @param orderId
	 * @return
	 * 删除邀请
	 */
	int delete(@Param("orderId")String orderId);
	
	
	TbInvitecard statisById(@Param("id")String orderId);
	
	
	/**
	  * inviteSwitch(查询车场的邀请开关)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: inviteSwitch
	  * @Description: TODO
	  * @param @param parkId
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	
	
	int inviteSwitch(@Param("parkId")int parkId);
	
	/**
	 * @Description (根据id查询信息)
	 * @param id
	 * @return
	 */
	TbInvitecard queryById(@Param("id")String id);
	
	List<TbInvitecard> query(Map map);
	
	List<TbInvitecard> listByExample(TbInviteExample example);
	
	/**
	 * @Description (根据用户id查询列表)
	 * @param userId
	 * @return
	 */
	List<TbInvitecard> listByUserId(@Param("userId") int userId);
	
	
	    /**
	    * @Title: queryInvitesByParkidCarnum
	    * @Description: TODO(极据parkid,carNum 查询当前有效的邀请列表)
	    * @param @param parkId
	    * @param @param carNum
	    * @param @return    参数
	    * @return List<TbInvitecard>    返回类型
	    * @throws
	    */
	List<TbInvitecard> queryInvitesByParkidCarnum(@Param("parkId") int parkId,@Param("carNum")String carNum);
	
	
	/**
	 * @Description (取消邀请)
	 * @param orderId
	 * @param status
	 * @return
	 */
	int cancelInvite(@Param("id") String orderId,@Param("status") int status);
	
	    /**
	    * @Title: updateIntimeStatusByid
	    * @Description: TODO(根据邀请单 id 更新进场时间，与邀请单状态)
	    * @param @param id
	    * @param @param inDateTime
	    * @param @param status
	    * @param @return    参数
	    * @return int    返回类型
	    * @throws
	    */
	int updateIntimeStatusByid(@Param("id")int id,@Param("inDateTime")Date inDateTime,@Param("status")int status);
	
	
	    /**
	    * @Title: InviteOutcheck
	    * @Description: TODO(车辆出场，更新邀请单)
	    * @param @param record
	    * @param @return    参数
	    * @return int    返回类型
	    * @throws
	    */
	int inviteOutcheck(TbInoutRecord record);
	
	/**
	 * @Description (邀请来访)
	 * @param record
	 * @return
	 */
	int inviteVisited(TbInvitecard record);
	 /**
	  * invited(这里用一句话描述这个方法的作用)
	  *
	  * @Title: invited
	  * @Description: 是否已经邀请
	  * @param @param parkId
	  * @param @param userId
	  * @param @param carNum
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	int invited(@Param("parkId")int parkId,@Param("userId")int userId,@Param("carNum")String carNum);
	
	/**
	  * hasInvited(是否被邀请)
	  * TODO(这里描述这个方法适用条件 – 可选)
	  * TODO(这里描述这个方法的执行流程 – 可选)
	  * TODO(这里描述这个方法的使用方法 – 可选)
	  * TODO(这里描述这个方法的注意事项 – 可选)
	  *
	  * @Title: hasInvited
	  * @Description: TODO
	  * @param @param record
	  * @param @return    设定文件
	  * @return int    返回类型
	  * @throws
	  */
	
	
	int hasInvited(TbInvitecard tbInvitecard);
	
	/**
	 * @Description (根据id 更新邀请单状态)
	 * @param id
	 * @param status
	 * @return
	 */
	int updateStatusTimeOut(@Param("id")String id,@Param("status")int status);
}
